package model

import (
	"gitee.com/zaiqiang231/zcamp-service-camp/app/model/meta"
	"time"
)

// PostStatistics 帖子统计表
type PostStatistics struct {
	meta.RecordModel
	UID          int64 `gorm:"column:uid;index:idx_uid_postid,unique;" json:"uid"`         // 发布动态的用户id
	PostID       int64 `gorm:"column:post_id;index:idx_uid_postid,unique;" json:"post_id"` // 唯一id
	LikeCount    int   `gorm:"column:like_count" json:"like_count"`                        // 点赞数（排除用户自己的点赞数）
	CommentCount int   `gorm:"column:comment_count" json:"comment_count"`                  // 评论数（排除用户自己的评论数）
	ViewCount    int   `gorm:"column:view_count" json:"view_count"`                        // 浏览数（排除用户自己的浏览数）
	PostWeight   int   `gorm:"column:post_weight" json:"post_weight"`                      // 帖子权重
	AllLikeCount int   `gorm:"column:all_like_count" json:"all_like_count"`                // 所有点赞数
}

func (PostStatistics) TableName() string {
	return "z_post_statistics"
}

type PostInfo struct {
	meta.RecordModel
	PostID           uint64    `json:"post_id" gorm:"post_id"`
	Uid              int64     `json:"uid" gorm:"uid"`
	Status           int       `json:"status" gorm:"status"`                                // 状态：1预发布，2在线，3已下线
	CampId           int64     `json:"camp_id" gorm:"camp_id"`                              //打卡的营地id
	PType            int8      `json:"p_type" gorm:"p_type"`                                // 帖子类型 1动态 2视频 3文章
	Title            string    `json:"title" gorm:"title"`                                  // 标题
	Content          string    `json:"content" gorm:"content"`                              // 内容
	Pictures         string    `json:"pictures" gorm:"pictures"`                            // json 营地图片
	PublishTime      time.Time `json:"publish_time" gorm:"publish_time"`                    // 发布时间
	LocationAddr     string    `json:"location_addr" gorm:"location_addr"`                  // 定位具体地址
	Longitude        string    `json:"longitude" gorm:"longitude"`                          // 经度
	Latitude         string    `json:"latitude" gorm:"latitude"`                            // 纬度
	CampingStartTime int64     `json:"camping_start_time" gorm:"column:camping_start_time"` // 露营日开始时间戳
	CampingEndTime   int64     `json:"camping_end_time" gorm:"column:camping_end_time"`     // 露营日结束时间戳
	TopicNames       string    `json:"topic_names" gorm:"column:topic_names"`               // 话题名称列表，逗号分隔
}

func (PostInfo) TableName() string {
	return "z_post"
}

type PostMoreInfo struct {
	PostInfo
	CommentNums int64 `json:"comment_nums,omitempty"` // 评论数
}

type PostLike struct {
	meta.RecordModel
	PostID    string `json:"post_id" gorm:"post_id"`
	CreateUID string `json:"create_uid" gorm:"create_uid"`
	LikeUID   string `json:"like_uid" gorm:"like_uid"`
}

func (PostLike) TableName() string {
	return "z_post_like"
}

type MyCampingData struct {
	CampingCount       int   `json:"camping_count"`         //露营次数
	CityCount          int   `json:"city_count"`            //城市个数
	PunchCount         int   `json:"punch_count"`           //打卡次数
	LastCampingEndTime int64 `json:"last_camping_end_time"` //最大的露营日结束时间戳
}

type PostingDetail struct {
	Post      PostMoreInfo `json:"post"`
	User      PostUser     `json:"user"`
	CampInfo  PostCampInfo `json:"camp_info"`
	ViewCount int          `json:"view_count"`
}

type PostUser struct {
	Uid       int64  `json:"uid"`
	NickName  string `json:"nick_name"`
	HeaderImg string `json:"header_img"`
}

type PostCampInfo struct {
}

type PostingDetailWithDistance struct {
	Post      PostInfoWithDistance `json:"post"`
	Distance  int64                `json:"distance"` //距离
	User      PostUser             `json:"user"`
	CampInfo  PostCampInfo         `json:"camp_info"`
	ViewCount int                  `json:"view_count"`
}

type PostInfoWithDistance struct {
	PostInfo
	Distance int64 `json:"distance"` //距离
}
